前面我們介紹了幾種變數容器,例如陣列和切片,這些皆以數字做為索引,而今天要介紹的映射(map),是另一種容器,儲存鍵/值 (key/value) 對,是將鍵作為索引,以鍵來取相對的值。
在建立映射時,會搭配make來建立,而map也沒有長度的限制,以下示範建立一個空的map:
package main
import (
"fmt"
)
func main() {
// 宣告一個空的映射
m := make(map[string]string)
// 印出map
fmt.Println(m)
}
然而填入映射的方式,與陣列和切片類似,這裏以程式碼來示範一下如何填入map的鍵/值對:
package main
import (
"fmt"
)
func main() {
// 宣告一個空的映射
m := make(map[string]string)
// 填入map
m["台北市"] = "柯文哲"
m["台中市"] = "盧秀燕"
m["高雄市"] = "陳其邁"
// 印出map
fmt.Println(m)
}
如果今天印出一個 map 中不存在的鍵所對應的值,會是印出什麼呢?
package main
import (
"fmt"
)
func main() {
// 宣告一個空的映射
m := make(map[string]string)
// 填入map
m["台北市"] = "柯文哲"
m["台中市"] = "盧秀燕"
m["高雄市"] = "陳其邁"
// 印出map
fmt.Println(m["台南市"])
}
以上面的範例,在最後印出的為空的值,如果不確定鍵/值對是否存在,也可以用以下語法檢查:
package main
import (
"fmt"
)
func main() {
// 宣告一個空的映射
m := make(map[string]string)
// 填入map
m["台北市"] = "柯文哲"
m["台中市"] = "盧秀燕"
m["高雄市"] = "陳其邁"
// 確認是否為鍵值
v, ok := m["台北市"]
fmt.Println(v, ok) // 柯文哲 true
}
v 變數為鍵對應到的值,ok 則為布林值,代表鍵值是否存在,像這個例子,因為 "台北市" 為存在的鍵,所以 ok 對應到的值為 true,相反的帶入 "台南市" ,就會印出 false。
如果想刪除某對鍵/值,我們可以用 delete 函式來處理:
package main
import (
"fmt"
)
func main() {
// 宣告一個空的射.
m := make(map[string]string)
// 填入map
m["台北市"] = "柯文哲"
m["台中市"] = "盧秀燕"
m["高雄市"] = "陳其邁"
// 刪除一對鍵值
delete(m, "台北市")
// 印出一對鍵值
fmt.Println(m)
}
映射的特色是,我們能由鍵得到值,但不能由值得到鍵;另外,鍵不能重覆,但值可以。希望今天介紹映射給各位讀者,各位讀者可以知道映射如何使用。下一篇我們將介紹 Go 語言的指標,感謝今天的閱讀!
https://opensourcedoc.com/golang-programming/map/